home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / bell212.arc / PLOT.BAS < prev    next >
Encoding:
BASIC Source File  |  1986-07-18  |  10.7 KB  |  314 lines

  1.  
  2.  
  3.     10 '*****************************************************************
  4.     11 '*           PROGRAM TO PLOT XDS TRACE DATA ON TI PC             *
  5.     12 '* TO COLLECT DATA: RUN PROGRAM WITH TRACE SET ON XDS.  CAPTURE  *
  6.     13 '* THE DISPLAYED TRACE (USING 'DT' COMMAND) TO A FILE.  RUN THIS *
  7.     14 '* PROGRAM TO PLOT DATA ON PC.  USE 'PRNTSCRN' OR 'GPRINT'       *
  8.     16 '* COMMANDS TO OBTAIN A HARD COPY.  TITLES CAN BE ADDED AT THE   *
  9.     18 '* BOTTOM OF SCREEN BEFORE PRINTING BY USING FUNTION KEY (F7)    *
  10.     19 '*                                                               *
  11.     20 '*   Written by:  Peter Ehlig                                    *
  12.     21 '*   Modified by: Raj Chirayil                                   *
  13.     22 '*   Copyright Texas Instruments,  07/18/86                      *
  14.     23 '*                                                               *
  15.     25 '*****************************************************************
  16.     30 DIM PLT(10,700),N$(10),SIGSCL(10)
  17.     35 CLS: KEY OFF: S=4
  18.     35 CX = 0: CY = 0
  19.     40 COLOR 4,0
  20.     50 KEY ON
  21.     55 KEY(1) ON
  22.     60 KEY(2) ON
  23.     65 KEY(3) ON
  24.     70 KEY(4) ON
  25.     75 KEY(5) ON
  26.     80 KEY(6) ON
  27.     85 KEY(7) ON
  28.     90 KEY(8) ON
  29.     95 KEY(9) ON
  30.     100 KEY(10) ON
  31.     110 GOSUB 1420
  32.     115 INPUT "# OF VARIABLES (MAX 6) = ",J
  33.     120 FOR I = 1 TO J
  34.     125 PRINT "NAME OF VARIABLE ";I;:INPUT N$(I)
  35.     130 NEXT
  36.     135 PRINT "SIGNALS FOR CONSTELLATION:  ";
  37.     140 INPUT;"X-AXIS ";CX : INPUT "  Y-AXIS ";CY
  38.     160 INPUT "INPUT FILE NAME = ", INFILE$
  39.     170 OPEN INFILE$ FOR INPUT AS #2
  40.     180 J1 = 1
  41.     190 GOSUB 240  'LOAD PLOT DATA
  42.     200 GOTO 780
  43.     240 'READ FILE AND LOAD PLOT DATA
  44.     250 I = 1
  45.     260 INPUT#2,R$
  46.     270 IF MID$(R$,1,4) <> "0000" THEN GOTO 260
  47.     280 WHILE NOT EOF(2)
  48.     290 H$ = MID$(R$,44,4)
  49.     300 SIG = 0
  50.     310 C$ = MID$(H$,4,1)
  51.     320 GOSUB 510
  52.     330 SIG = SR
  53.     340 C$ = MID$(H$,3,1)
  54.     350 GOSUB 510
  55.     360 SIG = SIG + SR * 16
  56.     370 C$ = MID$(H$,2,1)
  57.     380 GOSUB 510
  58.     390 SIG = SIG + SR * 256
  59.     400 C$ = MID$(H$,1,1)
  60.     410 GOSUB 510
  61.     420 SIG = SIG + SR * 4096
  62.     430 IF SIG > 32767 THEN SIG = SIG - 65536!
  63.     440 PLT(J1,I) = SIG / 32384
  64.     450 IF J1 = J THEN J1 = 1: I = I + 1 ELSE J1 = J1 + 1
  65.     460 INPUT#2,R$
  66.     470 IF MID$(R$,1,1) <> "0" AND NOT EOF(2) GOTO 460
  67.     480 WEND
  68.     490 I = I - 1
  69.     500 RETURN
  70.     510 'CONVERT NIBBLE FROM HEX ASCII TO DECIMAL INTEGER
  71.     520 SR = ASC(C$) - 48
  72.     530 IF SR < 0 THEN SR = 0
  73.     540 IF SR > 9 THEN SR = SR - 7
  74.     550 RETURN
  75.     560 ' ************* PLOT SIGNALS
  76.     570 X = 1: LOCATE 1,1
  77.     580 INPUT "NEW SCREEN (N) OR OVERLAY (O) ? ",ANS$
  78.     585 LOCATE 1,1: PRINT "                                               "
  79.     590 IF ANS$ = "N" THEN CLS: S=4 ELSE GOTO 610
  80.     600 LINE(17,150)-(700,150)
  81.     610 COLOR K,0
  82.     620 LOCATE 4,S: S=S+10: PRINT N$(K)
  83.     630 ' ************* PLOT DATA
  84.     640 Y = 150 - YR * EXPAND * PLT(K,STRT)
  85.     650 CB = 1          ' BAUD INTERVAL COUNTER
  86.     660 FOR L = STRT+1 TO FINI
  87.     670 YN = 150 - YR * EXPAND * PLT(K,L)
  88.     675 IF X < 17 THEN GOTO 690
  89.     680 LINE (X,Y) - (X+XI,YN)
  90.     690 X = X + XI
  91.     700 Y = YN
  92.     710 CB = CB + 1
  93.     720 COLOR 7,0
  94.     730 'IF CB = 16 THEN LINE(X,50)-(X,250): CB=1 'ADD FOR GRID
  95.     735 IF X < 17 THEN GOTO 750
  96.     740 LINE(X,147)-(X,153)
  97.     750 COLOR K,0
  98.     760 NEXT
  99.     770 RETURN
  100.     780 ' ************* PLOTTER ROUTINES
  101.     790 CLS
  102.     800 PRINT "DATA INPUT COMPLETE"
  103.     810 STRT = 1
  104.     820 FINI = I
  105.     830 EXPAND = 1
  106.     840 HCDT = 0
  107.     850 FOR K = 1 TO J
  108.     860 SIGSCL(K) = 1
  109.     870 NEXT
  110.     880 XI = 700 / (FINI-STRT)
  111.     890 YR = 100
  112.     900 IKEY = 0
  113.     910 COLOR 4,0
  114.     950 ON KEY(1) GOSUB 1080
  115.     955 ON KEY(2) GOSUB 1010
  116.     960 ON KEY(3) GOSUB 1540
  117.     965 ON KEY(4) GOSUB 1140
  118.     970 ON KEY(5) GOSUB 1590
  119.     975 ON KEY(6) GOSUB 1800
  120.     980 ON KEY(7) GOSUB 2000
  121.     985 ON KEY(8) GOSUB 2100
  122.     990 ON KEY(9) GOSUB 20000
  123.     995 ON KEY(10) GOSUB 1700
  124.     1000 GOTO 910
  125.     1010 ' *********** PLOT SIGNALS
  126.     1020 LOCATE 1,1: INPUT "REPLOT WHICH SIGNAL ? ",K
  127.     1025 LOCATE 1,1
  128.     1026 PRINT "                                      "
  129.     1030 XI = 700 / (FINI-STRT)
  130.     1040 EXPAND = SIGSCL(K)
  131.     1050 GOSUB 560
  132.     1060 KEY(2) ON
  133.     1070 RETURN
  134.     1080 COLOR 7,0
  135.     1090 KEY(1) ON
  136.     1100 CLOSE
  137.     1110 IF HCDT = 1 THEN GOSUB 1370
  138.     1120 CLS
  139.     1125 SYSTEM
  140.     1130 END
  141.     1140 PRINT "CURRENT START POINT = ",STRT
  142.     1150 INPUT "NEW START POINT = ? ",NSTRT
  143.     1160 IF NSTRT > 0 THEN STRT = NSTRT
  144.     1170 PRINT "CURRENT END POINT = ",FINI
  145.     1180 INPUT "NEW END POINT = ? ",NFINI
  146.     1190 IF NFINI > STRT THEN FINI = NFINI
  147.     1200 CLS
  148.     1210 RETURN
  149.     1220 KEY(4) ON
  150.     1230 FOR K = 1 TO J
  151.     1240 PRINT "SCALING FACTOR FOR ",N$(K)," = ",SIGSCL(K)
  152.     1250 INPUT "NEW SCALING VALUE = ? ",NSCL
  153.     1260 IF NSCL > 0 THEN SIGSCL(K) = NSCL
  154.     1270 NEXT
  155.     1280 CLS
  156.     1290 RETURN
  157.     1300 ' *********** SET UP GPRINT
  158.     1310 DPM$ = CHR$(27)+CHR$(64)
  159.     1320 WPM$ = CHR$(27)+CHR$(13)
  160.     1330 OPEN "LPT1:" FOR OUTPUT AS #5
  161.     1340 PRINT#5,DPM$
  162.     1350 CLOSE#5
  163.     1360 RETURN
  164.     1370 ' *********** RESET PRINTER TO WP MODE
  165.     1380 OPEN "LPT1:" FOR OUTPUT AS #5
  166.     1390 PRINT #5,WPM$
  167.     1400 CLOSE#5
  168.     1410 RETURN
  169.     1420 ' *********** DEFINE FUNCTION KEYS
  170.     1430 KEY 1,"QUIT"
  171.     1440 KEY 2,"PLOT"
  172.     1450 KEY 3,"SCALE"
  173.     1460 KEY 4,"EXPAND"
  174.     1470 KEY 5,"P850"
  175.     1480 KEY 6,"RENAME"
  176.     1490 KEY 7,"TITLE"
  177.     1500 KEY 8,"CNSTLN"
  178.     1510 KEY 9,"BRDR"
  179.     1520 KEY 10,"KEY"
  180.     1530 RETURN
  181.     1540 ' *********** SET UP SCALING FACTORS
  182.     1550 CLS
  183.     1560 KEY(3) ON
  184.     1570 GOSUB 1230
  185.     1580 RETURN
  186.     1590 ' *********** DEFINE HARDCOPY DEVICE
  187.     1600 IF HCDT=0 THEN HCDT=1: KEY 5,"P855" ELSE HCDT=0: KEY 5,"P850"
  188.     1610 IF HCDT = 1 THEN GOSUB 1300
  189.     1620 KEY(5) ON
  190.     1630 RETURN
  191.     1700 ' *********** TURN KEYS ON OR OFF ************
  192.    1705 IF IKEY=0 THEN IKEY=1: KEY OFF: COLOR 0,0 ELSE IKEY=0: KEY ON: COLOR 7,0
  193.     1715 KEY(10) ON
  194.     1720 RETURN
  195.     1800 ' *********** RE-DEFINE SIGNAL NAMES
  196.     1810 KEY(6) ON
  197.     1820 FOR I = 1 TO J
  198.     1830 PRINT "NAME OF VARIABLE ";I;:INPUT N$(I)
  199.     1840 NEXT
  200.     1850 PRINT "SIGNALS FOR CONSTELLATION: (1-6)  ";
  201.     1860 INPUT;"X-AXIS ";CX: INPUT "  Y-AXIS ";CY
  202.     1870 RETURN
  203.     2000 ' ************ INPUT TITLE AT THE BOTTOM OF THE SCREEN
  204.     2010 KEY(7) ON
  205.     2020 LOCATE 22,15: INPUT "",T$
  206.     2030 RETURN
  207.     2100 ' *************   PLOT CONSTELLATION POINTS
  208.     2105 IF CX < 1 THEN GOSUB 1860
  209.     2106 IF CX > 6 THEN GOSUB 1860
  210.     2110 CLS: COLOR 7,0
  211.     2115 LINE(200,150)-(500,150)   ' DRAW X-AXIS
  212.     2120 LINE(350,65)-(350,235)    ' DRAW Y-AXIS
  213.     2121 LINE(351,65)-(351,235)    ' DRAW Y-AXIS
  214.     2130 COLOR CY,0
  215.     2140 LOCATE 5,40: PRINT "Q"
  216.     2145 LOCATE 13,57: PRINT "I"
  217.     2150 KEY(8) ON
  218.     2160 'Y = 150 - YR * EXPAND * PLT(K,STRT)
  219.     2170 CB = 1
  220.     2180 FOR L = STRT+1 TO FINI
  221.     2190 YN = 150 - YR * SIGSCL(CY) * PLT(CY,L)
  222.     2200 XN = 350 - YR * SIGSCL(CX) * 2.4 * PLT(CX,L)
  223.     2210 CIRCLE (XN,YN),1,CX
  224.     2240 CB = CB + 1
  225.     2260 'IF CB = 16 THEN LINE(X,50)-(X,250): CB=1 'ADD FOR GRID
  226.     2270 'LINE(X,147)-(X,153)
  227.     2290 NEXT
  228.     2300 RETURN
  229.     3000 ' ************* ROUTINE TO DRAW BORDER *************
  230.     20000 'CLS : KEY OFF
  231.     20010 ' GOSUB 20500  '    SET UP PRINTER
  232.     20020 ' DRAW FROM DATA SUBROUTINE
  233.     20030 X0=360 : Y0=150 : X1=X0 : Y1=Y0
  234.     20040 S=1 : C=7 : R=1.8
  235.     20050 READ X2,Y2 : IF X2<0 THEN 20080
  236.     20060 LINE -(X0+X2*S,Y0+Y2*S/R),C
  237.     20070 X1=X2 : Y1=Y2 : GOTO 20050
  238.     20080 IF X2=-1 THEN 20460 ' END OF DATA
  239.     20090 IF X2=-2 THEN 20180  ' MOVE
  240.     20100 IF X2=-3 THEN 20200  ' CIRCLE
  241.     20110 IF X2=-4 THEN 20210  ' PAINT
  242.     20120 IF X2=-5 THEN 20230  ' SET SCALE FACTOR
  243.     20130 IF X2=-6 THEN 20240  ' SET STARTING POINT
  244.     20140 IF X2=-7 THEN 20250  ' SET COLOR
  245.     20150 IF X2=-8 THEN 20260  ' BOX
  246.     20160 IF X2=-9 THEN 20280  ' FILLED BOX
  247.     20170 PRINT "* * * BAD COMMAND: ";STR$(X2) : GOTO 20260
  248.     20180 READ X1,Y1 : C1=POINT (X0+X1*S,Y0+Y1*S/R)
  249.     20190 PSET (X0+X1*S,Y0+Y1*S/R),C1 : GOTO  20050
  250.     20200 READ X2,Y2,X3 : CIRCLE (X0+X2*S,Y0+Y2*S/R),X3*S,C : GOTO 20050
  251.     20210 ' READ X2,Y2,C,B : PAINT (X0+X2*S,Y0+Y2*S/R),C,B : GOTO 50
  252.     20220 READ X2,Y2,C,B : GOTO 20050
  253.     20230 READ S : GOTO 20050
  254.     20240 READ X0,Y0 : GOTO 20050
  255.     20250 READ C : GOTO 20050
  256.     20260 READ X1,Y1,X2,Y2:LINE (X0+X1*S,Y0+Y1*S/R)-(X0+X2*S,Y0+Y2*S/R),C,B
  257.     20270 GOTO 20050
  258.     20280 READ X1,Y1,X2,Y2:LINE (X0+X1*S,Y0+Y1*S/R)-(X0+X2*S,Y0+Y2*S/R),C,BF
  259.     20290 GOTO 20050
  260.     20300 '  TI LOGO
  261.     20310 DATA  -6,-6,620,270,-5,-5,.20,-7,-7,4,-2,-2,70,16
  262.     20320 DATA  70,106,5,106,8,112,20,122,33,136,39,142
  263.     20330 DATA  44,156,45,160,50,164,59,168,65,168,73,166,78,160
  264.     20340 DATA  85,158,90,158,105,162,113,170,126,200,136,214,150,226
  265.     20350 DATA  163,232,175,232,184,232,186,230,186,228,186,226,181,212
  266.     20360 DATA  183,198,189,188,213,170,235,158,240,156,248,148,250,140
  267.     20370 DATA  250,98,240,92,238,88,236,74,235,68,220,62,205,60
  268.     20380 DATA  189,66,185,82,203,82,197,110,179,110,170,142,169,156
  269.     20390 DATA  173,158,182,154,174,172,165,182,150,186,138,182,128,168
  270.     20400 DATA  126,154,136,110,118,110,124,82,142,82,147,58,130,52
  271.     20410 DATA  130,16,70,16
  272.     20420 DATA -2,-2,153,70,136,144,162,144,179,70,153,70
  273.     20430 DATA -4,-4,100,100,4,4,-4,-4,160,100,4,4
  274.     20440 DATA -3,-3,170,35,12,-4,-4,170,35,4,4
  275.     20450 DATA -1,-1
  276.     20460 ' GOSUB 600
  277.     20470 GOSUB 20600
  278.     20480 GOSUB 20790
  279.     20485 RESTORE: X1 = 1: Y1 = 1
  280.     20490 RETURN
  281.     20500 ' SETUP PRINTER FOR GRAPHIC PRINT
  282.     20510 DPM$ = CHR$(27)+CHR$(64)
  283.     20520 OPEN "LPT1:" FOR OUTPUT AS #5
  284.     20530 PRINT#5,DPM$
  285.     20540 RETURN
  286.     20550 'SETUP PRINTER FOR NORMAL OPERATION
  287.     20560 WPM$ = CHR$(27)+CHR$(13)
  288.     20570 PRINT#5,WPM$
  289.     20580 CLOSE#5
  290.     20590 RETURN
  291.     20600 ' DISPLAY BORDER
  292.     20610 COLOR 4,0
  293.     20620 CIRCLE (40,18),24,4,1.57,3.14
  294.     20630 CIRCLE (40,18),23,4,1.57,3.14
  295.     20640 LINE (16,18) - (16,274)
  296.     20650 LINE (17,18) - (17,274)
  297.     20660 CIRCLE (40,274),24,4,3.14,4.71
  298.     20670 CIRCLE (40,274),23,4,3.14,4.71
  299.     20680 LINE (40,287) - (612,287)
  300.     20690 CIRCLE (680,274),24,4,4.71,0
  301.     20700 CIRCLE (680,274),23,4,4.71,0
  302.     20710 LINE (704,274) - (704,14)
  303.     20720 LINE (703,274) - (703,14)
  304.     20730 CIRCLE (680,18),24,4,0,1.57
  305.     20740 CIRCLE (680,18),23,4,0,1.57
  306.     20750 LINE (680,5) - (605,5)
  307.     20760 LINE (480,5) - (275,5)
  308.     20770 LINE (75,5) - (39,5)
  309.     20780 RETURN
  310.     20790 'BOARDER HEADER
  311.     20800 LOCATE 1,10
  312.     20810 PRINT "PROGRAMMABLE PRODUCTS                        TMS320 FAMILY"
  313.     20820 RETURN
  314.